<template>
    <div class="cart_page">
      <table>
        <thead>
          <tr>
            <th style="width: 8%">
              <i :class="
                            checkAll
                                ? 'iconfont icon-yduifuxuankuangxuanzhong'
                                : 'iconfont icon-yduifuxuankuang'
                        "  @click="checkAllFn"></i>
            </th>
            <th style="width: 30%">礼品信息</th>
            <th>兑换分数</th>
            <th>数量</th>
            <th>小计 (鸡腿)</th>
            <th>操作</th>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(item, index) in cartsArr" :key="item.id">
            <td>
              <i :class="
                            checkList[index]
                                ? 'iconfont icon-yduifuxuankuangxuanzhong'
                                : 'iconfont icon-yduifuxuankuang'
                        "   @click="checkFn(index)"></i>
                        
            </td>
            <td>
              <section>
                <img
                  width="84"
                  alt="列表图片"
                  :src="'http://sc.wolfcode.cn' + item.coverImg"
                />
                <div class="info">
                    <h5>{{ item.title }}</h5>
                <p>{{ item.versionDescription }}</p>
                </div>
              </section>
            </td>
            <td>{{ item.coin }}鸡腿</td>
            <td>
              <div class="step">
                <span  @click="stepFn(-1,index)">-</span>
                <input type="text" disabled v-model="item.total" />
                <span @click="stepFn(1,index)">+</span>
              </div>
            </td>
            <td>{{ item.coin * item.total }}鸡腿</td>
            <td>
              <span class="del" @click="del(item.id)">删除</span>
            </td>
          </tr>
        </tbody>
      </table>
      <div class="total">总计：<span>{{ total }}鸡腿</span></div>
      <div class="submit">清空购物车</div>
    </div>
  </template>

<script setup lang="ts">
import { ShopCartsAPI,DeleteCartsAPI } from '@/request/api';
import { ElMessageBox, ElMessage } from "element-plus";
import { ref,computed } from 'vue';
import { useStore } from "@/store/user"
const store = useStore()
// 全选
const checkAll = ref(false)
// 单选按钮数组
const checkList = ref<any>([])
const cartsArr = ref<Datum[] | any>([])
// 请求购物数据
const getShopCarts=()=>{
  ShopCartsAPI().then(res=>{
    if (!res) return;
        cartsArr.value=res.data
        checkList.value = res.data.map(() => false);
})  
}
getShopCarts();
// 步进器

const stepFn = (val: number,index:number) => {
    
    if (cartsArr.value[index].total - 1 == 0 && val == -1) {
        return;
      }
     
     cartsArr.value[index].total += val;
    
    }
    // 反选
const checkFn = (index: number) => {

checkList.value[index] = !checkList.value[index]
if (checkList.value.includes(false)) {
    checkAll.value = false;
} else {
    checkAll.value = true;
}
}
// 全选
const checkAllFn = () => {
checkAll.value = !checkAll.value;
checkList.value = cartsArr.value.map(() => checkAll.value);
}
const total = computed(() => {
return cartsArr.value.reduce((pre: any, cur: any,index:any) => {
  return pre + (checkList.value[index] ? cur.coin*cur.total : 0)
}, 0)
})
// 删除购物车商品
const del = (id: number) => {
  ElMessageBox.confirm('是否要删除该商品?', '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning',
  }).then(() => {
    DeleteCartsAPI(id).then((res) => {
        ElMessage.success('删除成功');
        store.registerUser();
        getShopCarts();
    })
  })

}


</script>

<style lang="less" scoped>

.cart_page {
  background: #fff;
  table {
    width: 100%;
    border: 1px solid #e6e6e6;
    box-sizing: border-box;
    color: #666;
    border-collapse: collapse;
    font-size: 14px;
    thead {
      background: #f2f2f2;
      th {
        padding: 19px 0;
        .iconfont {
          cursor: pointer;
        }
        .icon-yduifuxuankuangxuanzhong {
          color: #0a328e;
        }
      }
    }
    tbody {
      tr {
        td {
          vertical-align: middle;
          text-align: center;
          padding: 19px 0;
          table-layout: fixed; // td的宽度固定，不随内容变化
          .iconfont {
            cursor: pointer;
          }
          .icon-yduifuxuankuangxuanzhong {
            color: #0a328e;
          }
          section {
            padding-left: 20px;
            display: flex;
            box-sizing: border-box;
            img {
              margin-right: 12px;
            }
            .info {
              padding-top: 20px;
              flex: 1;
              overflow: hidden;
              box-sizing: border-box;
              text-align: left;
              h5 {
                overflow: hidden;
                color: #333;
                font-size: 18px;
                white-space: nowrap;
                text-overflow: ellipsis;
                margin-bottom: 20px;
              }
              p {
                color: #666;
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
              }
            }
          }
          .step {
            width: 106px;
            height: 32px;
            margin: auto;
            span {
              float: left;
              width: 30px;
              height: 32px;
              display: block;
              border: solid 1px #d1d1d1;
              font-size: 20px;
              box-sizing: border-box;
              font-weight: normal;
              font-stretch: normal;
              line-height: 30px;
              letter-spacing: 0px;
              color: #999999;
              text-align: center;
              cursor: pointer;
              background: #fff;
            }
            input {
              box-sizing: border-box;
              width: 46px;
              height: 32px;
              float: left;
              text-align: center;
              font-size: 14px;
              line-height: 23px;
              letter-spacing: 0px;
              color: #666666;
              border: 0;
              border-top: 1px solid #d1d1d1;
              border-bottom: 1px solid #d1d1d1;
              background: #fff;
            }
          }
          .del {
            border: 1px solid #ececec;
            border-radius: 4px;
            padding: 5px 10px;
            cursor: pointer;
            &:hover {
              color: #fff;
              background: #0a328e;
            }
          }
        }
      }
    }
  }
  .total {
    padding: 30px 0;
    text-align: right;
    font-size: 22px;
    span {
      font-weight: bold;
      color: #fd604d;
    }
  }
  .submit {
    width: 175px;
    height: 40px;
    text-align: center;
    line-height: 40px;
    font-family: SourceHanSansSC-Light;
    font-size: 18px;
    font-weight: normal;
    font-stretch: normal;
    letter-spacing: 0px;
    color: #ffffff;
    cursor: pointer;
    background-color: #0a328e;
    float: right;
  }
}
</style>